package com.system.cacheCenterBackend.service;

import java.util.List;

/**
 * List类型缓存服务接口
 */
public interface ListCacheService {

    /**
     * 从左侧添加元素到列表
     *
     * @param key   键
     * @param value 值
     * @return 操作后列表长度
     */
    Long leftPush(String key, String value);

    /**
     * 从左侧添加元素到列表
     *
     * @param key   键
     * @param value 值集合
     * @return 操作后列表长度
     */
    Long leftPushAll(String key, List<String> value);

    /**
     * 从右侧添加元素到列表
     *
     * @param key   键
     * @param value 值
     * @return 操作后列表长度
     */
    Long rightPush(String key, String value);

    /**
     * 从左侧弹出元素
     *
     * @param key 键
     * @return 弹出的元素
     */
    String leftPop(String key);

    /**
     * 从右侧弹出元素
     *
     * @param key 键
     * @return 弹出的元素
     */
    String rightPop(String key);

    /**
     * 获取列表指定范围的元素
     *
     * @param key   键
     * @param start 开始索引
     * @param end   结束索引
     * @return 元素列表
     */
    List<String> listRange(String key, long start, long end);

    /**
     * 获取列表长度
     *
     * @param key 键
     * @return 列表长度
     */
    Long listSize(String key);

    /**
     * 获取List缓存值
     *
     * @param key 键
     * @return List值
     */
    List<String> get(String key);

    /**
     * 设置过期时间
     *
     * @param key     键
     * @param timeout 过期时间（秒）
     * @return 是否设置成功
     */
    boolean expire(String key, long timeout);

    /**
     * 删除List缓存
     *
     * @param key 键
     * @return 是否删除成功
     */
    boolean delete(String key);
}